function fig = PlotXe129T1Rho(obj, drvData, sign)
    if nargin == 1
        drvData = obj.SystemInfo.Xe129T1Rho;
        sign = -1;
    elseif nargin == 2
        sign = -1;
    end
    
    drvSignalR = drvData.signal.T1Rho.getNodeData(1);
    drvSignalTheta = drvData.signal.T1Rho.getNodeData(2);
    pumpSignalTheta = drvData.signal.Pump.getNodeData(2);

    fig = figure( 'Name', sprintf('Xe129 T1Rho [%s]', datestr(drvData.timestamp)), 'WindowStyle', 'Docked'); 
    
    ax1 = subplot(2, 2, 1, 'Parent', fig);
    plot(ax1, drvSignalR.x, drvSignalR.y, 'r.-')
    legend(ax1, 'RF Magnetometer demodR', 'Location', 'best');
    xlim(ax1, minmax(drvSignalR.x(:)'));
    xlabel(ax1, 'Time (s)'); ylabel(ax1, 'demodR (V)');
    grid on
    
    ax2 = subplot(2, 2, 2, 'Parent', fig);
    plot(ax2, drvSignalTheta.x, drvSignalTheta.y, 'b.-');
    xlabel(ax2, 'Time (s)'); ylabel(ax2, 'demodTheta (degree)');
    legend(ax2, 'RF Magnetometer demodTheta', 'Location', 'best');
    title(ax2, sprintf('Calibration Amplitude = %3.2f V', drvData.parameter.calibration));
    xlim(ax2, minmax(drvSignalTheta.x(:)')); grid on;
    
    ax3 = subplot(2, 2, 3, 'Parent', fig);
    plot(ax3, drvData.fitting.data_t1rho.x, sign.*drvData.fitting.data_t1rho.y, 'b.-', drvData.fitting.data_t1rho.x, drvData.fitting.result(drvData.fitting.data_t1rho.x), 'r-'); grid on;
    xlabel(ax3, 'Time (s)'); ylabel('Xe Field (nT)'); xlim(ax3, minmax(drvData.fitting.data_t1rho.x(:)'));
    title(ax3, sprintf('T_{1\\rho} = %3.1f s, b_{max} = %3.1f nT, b_0=%3.1f nT', drvData.T1rho, drvData.XeField, drvData.fitting.result.c));
    
    ax4 = subplot(2, 2, 4, 'Parent', fig);
    plot(ax4, drvData.fitting.fft.fList, drvData.fitting.fft.value, 'r.-'); grid on;
    xlabel(ax4, 'Frequency (Hz)'); ylabel('FFT'); xlim(ax4, [0, 3.0*drvData.fitting.fft.RabiFreq]);
    title(ax4, sprintf('Rabe Freq. = %3.3f Hz', drvData.fitting.fft.RabiFreq));
    
    figPump = figure( 'Name', sprintf('Xe129 Exchange Pumping [%s]', datestr(drvData.timestamp)), 'WindowStyle', 'Docked'); 
    ax = axes('Parent', figPump);
    plot(ax, pumpSignalTheta.x, sign.*pumpSignalTheta.y, 'b.', pumpSignalTheta.x, drvData.fitting.resultPump(pumpSignalTheta.x), 'r-'); grid on;
    xlim(ax, minmax(pumpSignalTheta.x(:)')); title(sprintf('Exchange Pumping \\tau = %3.1f s', drvData.fitting.resultPump.tau));
end

